{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/pinecone-io/examples/blob/master/learn/search/faiss-ebook/locality-sensitive-hashing-traditional/sparse_implementation.ipynb) [![Open nbviewer](https://raw.githubusercontent.com/pinecone-io/examples/master/assets/nbviewer-shield.svg)](https://nbviewer.org/github/pinecone-io/examples/blob/master/learn/search/faiss-ebook/locality-sensitive-hashing-traditional/sparse_implementation.ipynb)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Sparse Implementation of LSH\n",
    "\n",
    "Locality Sensitive Hashing (LSH) can be implemented for both sparse and dense vectors. In this notebook we will implement the algorithm for searching sparse vectors. We will be using *k-shingling* and *minhashing* to create our sparse vectors before applying them for search with LSH.\n",
    "\n",
    "We start by defining a few sentences."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "a = \"flying fish flew by the space station\"\n",
    "b = \"he will not allow you to bring your sticks of dynamite and pet armadillo along\"\n",
    "c = \"he figured a few sticks of dynamite were easier than a fishing pole to catch an armadillo\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "The first thing we do is create our shingles, we will use k-shingles where `k == 2`. For longer text it is recommended to create shingles where it is unlikely to produce matching shingles between non-matching text, `k` values of `7` to `11` would likely produce this outcome."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "fl|ly|yi|in|ng|g | f|fi|is|sh|h | f|fl|le|ew|w | b|by|y | t|th|he|e | s|sp|pa|ac|ce|e | s|st|ta|at|ti|io|on|"
     ]
    }
   ],
   "source": [
    "k = 2\n",
    "for i in range(len(a) - k+1):\n",
    "    print(a[i: i+k], end='|')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "These are our shingles, however, we must remove duplicate values as we are producing a *set*. We do this using the Python type `set`. To apply shingling to each of our sentences we will define a `shingle` function:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "def shingle(text: str, k: int):\n",
    "    shingle_set = []\n",
    "    for i in range(len(text) - k+1):\n",
    "        shingle_set.append(text[i:i+k])\n",
    "    return set(shingle_set)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'ta', 'e ', 'y ', 'fi', 'ti', 'io', ' s', 'is', 'fl', 'sp', ' t', 'yi', 'by', 'ce', 'th', 'at', ' f', 'ly', ' b', 'g ', 'st', 'w ', 'sh', 'pa', 'ng', 'ac', 'h ', 'le', 'in', 'on', 'he', 'ew'}\n"
     ]
    }
   ],
   "source": [
    "a = shingle(a, k)\n",
    "b = shingle(b, k)\n",
    "c = shingle(c, k)\n",
    "print(a)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now that we have our three shingles we create a shingle vocabulary by create a `union` between all three sets."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['wi', 'te', 'ti', ' s', 're', 'et', 'ig', 'll', 'fl', 'it', 't ', 'ha', 'ce', 'th', ' f', 'po', 'ly', 'ca', 'sh', 'ck', 'nd', 'l ', ' c', ' n', ' d', 'br', 'il', 'le', 'ea', 'on', 'ie', 'ur', 'ta', 's ', 'ks', 'as', 'ed', 'io', 'ch', 'is', ' w', 'am', ' a', 'mi', ' t', 'u ', 'f ', 'yi', 'by', 'at', 'hi', 'yn', 'g ', 'lo', 'yo', 'w ', 'ow', ' y', 'h ', 'ic', 'an', 'rm', 'gu', 'ou', 'ad', 'of', 'y ', 'na', 'sp', 'di', 'ma', ' b', 'ri', 'we', 'a ', 'r ', 'he', 'ew', 'ol', 'fe', 'o ', 'e ', 'to', 'fi', 'al', 'no', 'd ', ' p', ' e', 'si', 'n ', 'tc', 'st', 'pe', 'ar', 'pa', 'ot', 'ng', 'ac', ' o', 'in', 'er', 'dy']\n"
     ]
    }
   ],
   "source": [
    "vocab = list(a.union(b).union(c))\n",
    "print(vocab)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Using this vocab we can create one-hot encoded sparse vectors to represent our shingles."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0]\n"
     ]
    }
   ],
   "source": [
    "a_1hot = [1 if x in a else 0 for x in vocab]\n",
    "b_1hot = [1 if x in b else 0 for x in vocab]\n",
    "c_1hot = [1 if x in c else 0 for x in vocab]\n",
    "print(a_1hot)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "So we now have one-hot encoded sparse vectors we can move onto *minhashing*.\n",
    "\n",
    "## Minhashing\n",
    "\n",
    "Minhashing is the next step in our process. After creating our shingle sets we use minhashing to create *signatures* from those sets.\n",
    "\n",
    "To create our minhashing function we build several hash functions, each will randomly count from `1` to `len(vocab) + 1` - creating a *random* vector:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103]\n"
     ]
    }
   ],
   "source": [
    "hash_ex = list(range(1, len(vocab)+1))\n",
    "print(hash_ex)  # we haven't shuffled yet"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[93, 6, 56, 97, 88, 82, 90, 29, 22, 11, 44, 26, 41, 77, 17, 33, 65, 13, 69, 66, 45, 18, 36, 71, 85, 95, 37, 57, 40, 96, 19, 100, 87, 25, 16, 94, 81, 70, 46, 58, 21, 7, 102, 101, 10, 78, 3, 60, 27, 32, 24, 28, 14, 98, 59, 103, 73, 51, 67, 54, 8, 49, 34, 31, 47, 79, 30, 52, 9, 12, 23, 92, 61, 74, 5, 63, 38, 64, 83, 91, 80, 43, 53, 62, 75, 72, 86, 76, 4, 99, 2, 1, 39, 50, 89, 20, 55, 84, 42, 68, 35, 15, 48]\n"
     ]
    }
   ],
   "source": [
    "from random import shuffle\n",
    "\n",
    "shuffle(hash_ex)\n",
    "print(hash_ex)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We now have a randomized list of integers which we can use in creating our *hashed* signatures. What we do now is begin counting from `1` through to `len(vocab) + 1`, extracting the position of this number in our new `hash_ex` list, like so (for the first few integers):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1 -> 91\n",
      "2 -> 90\n",
      "3 -> 46\n",
      "4 -> 88\n"
     ]
    }
   ],
   "source": [
    "for i in range(1, 5):\n",
    "    print(f\"{i} -> {hash_ex.index(i)}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "What we do with this is count up from `1` to `len(vocab) + 1` and find if the resultant `hash_ex.index(i)` position in our one-hot encoded vectors contains a positive value (`1`) in that position, like so:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1 -> 91 -> 0\n",
      "2 -> 90 -> 0\n",
      "3 -> 46 -> 0\n",
      "4 -> 88 -> 0\n",
      "5 -> 74 -> 0\n",
      "6 -> 1 -> 0\n",
      "7 -> 41 -> 0\n",
      "8 -> 60 -> 0\n",
      "9 -> 68 -> 1\n",
      "match!\n"
     ]
    }
   ],
   "source": [
    "for i in range(1, len(vocab)+1):\n",
    "    idx = hash_ex.index(i)\n",
    "    signature_val = a_1hot[idx]\n",
    "    print(f\"{i} -> {idx} -> {signature_val}\")\n",
    "    if signature_val == 1:\n",
    "        print('match!')\n",
    "        break"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "That gives us a first signature value of `98`. But this is just a single value, and it takes many values to create a signature (100 for example).\n",
    "\n",
    "So, how to we generate these other values? By using more hash functions! Let's generate a set of hash functions to create a signature vector of length `20`."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "hash_funcs = []\n",
    "\n",
    "for _ in range(20)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "hash function 1:\n",
      "[58, 1, 48, 36, 34, 97, 66, 102, 65, 77, 78, 103, 95, 46, 79, 94, 37, 61, 83, 93, 69, 55, 16, 13, 50, 29, 11, 89, 27, 62, 68, 35, 72, 42, 17, 52, 24, 63, 26, 84, 51, 21, 54, 10, 25, 41, 88, 49, 64, 40, 30, 4, 56, 67, 23, 101, 71, 82, 43, 47, 53, 91, 15, 32, 70, 98, 2, 74, 76, 85, 22, 99, 6, 100, 87, 19, 18, 60, 45, 59, 86, 92, 75, 44, 33, 9, 73, 90, 7, 3, 31, 39, 80, 96, 81, 5, 57, 8, 12, 28, 14, 38, 20]\n",
      "hash function 2:\n",
      "[67, 100, 54, 52, 45, 101, 29, 49, 56, 73, 64, 13, 21, 40, 14, 95, 23, 5, 44, 96, 98, 4, 19, 91, 97, 103, 33, 92, 1, 15, 2, 77, 18, 66, 80, 24, 82, 9, 22, 6, 78, 70, 46, 31, 81, 43, 30, 48, 93, 61, 62, 63, 83, 20, 35, 32, 85, 47, 42, 69, 3, 68, 53, 76, 74, 60, 10, 58, 36, 8, 17, 79, 57, 12, 16, 41, 28, 65, 86, 71, 89, 37, 102, 34, 50, 84, 75, 26, 38, 27, 55, 39, 7, 25, 87, 11, 88, 51, 99, 90, 72, 59, 94]\n",
      "hash function 3:\n",
      "[21, 62, 67, 71, 12, 54, 46, 3, 83, 103, 38, 47, 6, 89, 20, 13, 85, 100, 58, 39, 18, 52, 30, 65, 24, 84, 101, 5, 79, 16, 2, 43, 70, 53, 88, 77, 64, 82, 63, 7, 87, 19, 95, 14, 50, 37, 44, 36, 9, 4, 15, 1, 28, 35, 55, 25, 93, 99, 72, 56, 97, 29, 94, 23, 91, 102, 34, 10, 76, 17, 51, 90, 57, 32, 8, 92, 98, 60, 41, 33, 31, 68, 42, 59, 80, 22, 61, 48, 96, 66, 78, 26, 27, 45, 49, 11, 86, 74, 69, 81, 40, 75, 73]\n"
     ]
    }
   ],
   "source": [
    "hash_funcs = []\n",
    "\n",
    "for _ in range(20):\n",
    "    hash_ex = list(range(1, len(vocab)+1))\n",
    "    shuffle(hash_ex)\n",
    "    hash_funcs.append(hash_ex)\n",
    "\n",
    "for i in range(3):\n",
    "    print(f\"hash function {i+1}:\")\n",
    "    print(hash_funcs[i])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We're only showing the first three hash functions here - we have *20* in total. To create our signatures we simply process each one-hot vector through each hash function, appending the output value to our signature for that vector."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[66, 39, 49, 76, 76, 66, 48, 66, 37, 81, 52, 81, 77, 3, 12, 13, 76, 48, 76, 95]\n"
     ]
    }
   ],
   "source": [
    "signature = []\n",
    "\n",
    "for func in hash_funcs:\n",
    "    for i in range(1, len(vocab)+1):\n",
    "        idx = func.index(i)\n",
    "        signature_val = a_1hot[idx]\n",
    "        if signature_val == 1:\n",
    "            signature.append(idx)\n",
    "            break\n",
    "\n",
    "print(signature)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And there we have our minhash produced signature for `a`. Let's clean up the code and formalize the process a little."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "def create_hash_func(size: int):\n",
    "    # function for creating the hash vector/function\n",
    "    hash_ex = list(range(1, size+1))\n",
    "    shuffle(hash_ex)\n",
    "    return hash_ex\n",
    "\n",
    "def build_minhash_func(vocab_size: int, nbits: int):\n",
    "    # function for building multiple minhash vectors\n",
    "    hashes = []\n",
    "    for _ in range(nbits):\n",
    "        hashes.append(create_hash_func(vocab_size))\n",
    "    return hashes\n",
    "\n",
    "# we create 20 minhash vectors\n",
    "minhash_func = build_minhash_func(len(vocab), 20)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "def create_hash(vector: list):\n",
    "    # use this function for creating our signatures (eg the matching)\n",
    "    signature = []\n",
    "    for func in minhash_func:\n",
    "        for i in range(1, len(vocab)+1):\n",
    "            idx = func.index(i)\n",
    "            signature_val = vector[idx]\n",
    "            if signature_val == 1:\n",
    "                signature.append(idx)\n",
    "                break\n",
    "    return signature"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[77, 100, 100, 55, 29, 16, 68, 97, 92, 48, 18, 32, 12, 18, 32, 77, 68, 49, 81, 14]\n",
      "[42, 43, 69, 55, 29, 96, 86, 46, 92, 5, 72, 65, 29, 5, 53, 33, 40, 94, 96, 70]\n"
     ]
    }
   ],
   "source": [
    "# now create signatures\n",
    "a_sig = create_hash(a_1hot)\n",
    "b_sig = create_hash(b_1hot)\n",
    "c_sig = create_hash(c_1hot)\n",
    "\n",
    "print(a_sig)\n",
    "print(b_sig)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We now have our three minhashed signatures! These signatures, despite being seemingly randomized, will on average have the very similar Jaccard similarity values as our previous sparse vectors. We have reduced the dimensionality of our vectors significantly - but maintained the same information!\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "def jaccard(a: set, b: set):\n",
    "    return len(a.intersection(b)) / len(a.union(b))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "**a** should have lower similarity with **b** and **c**:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.14814814814814814, 0.10344827586206896)"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "jaccard(a, b), jaccard(set(a_sig), set(b_sig))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.22093023255813954, 0.13793103448275862)"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "jaccard(a, c), jaccard(set(a_sig), set(c_sig))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And **b** and **c** should share much greater simliarity:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.45652173913043476, 0.34615384615384615)"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "jaccard(b, c), jaccard(set(b_sig), set(c_sig))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We're now ready to move onto the LSH process.\n",
    "\n",
    "# Locality Sensitive Hashing\n",
    "\n",
    "The approach we will be taking in this notebook is break our signature vector into multiple *bands*, creating several sub-vectors.\n",
    "\n",
    "We then hash each of these sub-vectors into a set of buckets, if we find that two sub-vectors from two signature vectors collide (end up in the same hash bucket) we take the two *full* signature vectors as *candidate pairs* - which we then compare in full with a similarity metric (like Jaccard similarity, cosine similarity, etc).\n",
    "\n",
    "There is no *'set'* way to hash our signature vectors, and in-fact the simplest approach is to check for equivalence across sub-vectors, which will be our approach.\n",
    "\n",
    "First, we must define the number of buckets `b` we would like to create. It's important to note that each bucket must contain an equal number of rows `r` - and so our signature length must be divisible by `b`."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "def split_vector(signature, b):\n",
    "    assert len(signature) % b == 0\n",
    "    r = int(len(signature) / b)\n",
    "    # code splitting signature in b parts\n",
    "    subvecs = []\n",
    "    for i in range(0, len(signature), r):\n",
    "        subvecs.append(signature[i : i+r])\n",
    "    return subvecs"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We'll start by splitting into 10 bands, creating rows of `2` - on the small side to be used in a genuine LSH function but good for our example (we'll explore different `r` and `b` values soon).\n",
    "\n",
    "Let's start with our **b** and **c** vectors, which should *hopefully* match in *at least one* band."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[[42, 43],\n",
       " [69, 55],\n",
       " [29, 96],\n",
       " [86, 46],\n",
       " [92, 5],\n",
       " [72, 65],\n",
       " [29, 5],\n",
       " [53, 33],\n",
       " [40, 94],\n",
       " [96, 70]]"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "band_b = split_vector(b_sig, 10)\n",
    "band_b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[[90, 43],\n",
       " [69, 55],\n",
       " [4, 101],\n",
       " [35, 15],\n",
       " [92, 22],\n",
       " [18, 65],\n",
       " [40, 18],\n",
       " [53, 33],\n",
       " [40, 94],\n",
       " [80, 14]]"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "band_c = split_vector(c_sig, 10)\n",
    "band_c"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Check if they match (we'll rewrite some of this into Numpy soon)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Candidate pair: [69, 55] == [69, 55]\n"
     ]
    }
   ],
   "source": [
    "for b_rows, c_rows in zip(band_b, band_c):\n",
    "    if b_rows == c_rows:\n",
    "        print(f\"Candidate pair: {b_rows} == {c_rows}\")\n",
    "        # we only need one band to match\n",
    "        break"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "And let's do the same for **a**."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [],
   "source": [
    "band_a = split_vector(a_sig, 10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [],
   "source": [
    "for a_rows, b_rows in zip(band_a, band_b):\n",
    "    if a_rows == b_rows:\n",
    "        print(f\"Candidate pair: {a_rows} == {b_rows}\")\n",
    "        # we only need one band to match\n",
    "        break"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [],
   "source": [
    "for a_rows, c_rows in zip(band_a, band_c):\n",
    "    if a_rows == c_rows:\n",
    "        print(f\"Candidate pair: {b_rows} == {c_rows}\")\n",
    "        # we only need one band to match\n",
    "        break"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Okay great, so even with this very simple implementation - we manage to identify sentences **b** and **c** and candidate pairs, and identify **a** as a non-candidate."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Tuning LSH\n",
    "\n",
    "We can visualize the probability of returning a candidate pair vs the similarity of the pair for different values of `r` and `b` (rows and bands respectively) like so:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [],
   "source": [
    "def probability(s, r, b):\n",
    "    # s: similarity\n",
    "    # r: rows (per band)\n",
    "    # b: number of bands\n",
    "    return 1 - (1 - s**r)**b"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "results = pd.DataFrame({\n",
    "    's': [],\n",
    "    'P': [],\n",
    "    'r,b': []\n",
    "})\n",
    "\n",
    "for s in np.arange(0.01, 1, 0.01):\n",
    "    total = 100\n",
    "    for b in [100, 50, 25, 20, 10, 5, 4, 2, 1]:\n",
    "        r = int(total/b)\n",
    "        P = probability(s, r, b)\n",
    "        results = results.append({\n",
    "            's': s,\n",
    "            'P': P,\n",
    "            'r,b': f\"{r},{b}\"\n",
    "        }, ignore_index=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:xlabel='s', ylabel='P'>"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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",
      "image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n  \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Created with matplotlib (https://matplotlib.org/) -->\n<svg height=\"262.19625pt\" version=\"1.1\" viewBox=\"0 0 385.78125 262.19625\" width=\"385.78125pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <metadata>\n  <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n   <cc:Work>\n    <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n    <dc:date>2021-08-12T21:05:52.829256</dc:date>\n    <dc:format>image/svg+xml</dc:format>\n    <dc:creator>\n     <cc:Agent>\n      <dc:title>Matplotlib v3.3.4, https://matplotlib.org/</dc:title>\n     </cc:Agent>\n    </dc:creator>\n   </cc:Work>\n  </rdf:RDF>\n </metadata>\n <defs>\n  <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\n </defs>\n <g id=\"figure_1\">\n  <g id=\"patch_1\">\n   <path d=\"M 0 262.19625 \nL 385.78125 262.19625 \nL 385.78125 0 \nL 0 0 \nz\n\" style=\"fill:none;\"/>\n  </g>\n  <g id=\"axes_1\">\n   <g id=\"patch_2\">\n    <path d=\"M 43.78125 224.64 \nL 378.58125 224.64 \nL 378.58125 7.2 \nL 43.78125 7.2 \nz\n\" style=\"fill:#ffffff;\"/>\n   </g>\n   <g id=\"matplotlib.axis_1\">\n    <g id=\"xtick_1\">\n     <g id=\"line2d_1\">\n      <defs>\n       <path d=\"M 0 0 \nL 0 3.5 \n\" id=\"mc7ca6d8532\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n      </defs>\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"55.89368\" xlink:href=\"#mc7ca6d8532\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_1\">\n      <!-- 0.0 -->\n      <g transform=\"translate(47.942118 239.238437)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 31.78125 66.40625 \nQ 24.171875 66.40625 20.328125 58.90625 \nQ 16.5 51.421875 16.5 36.375 \nQ 16.5 21.390625 20.328125 13.890625 \nQ 24.171875 6.390625 31.78125 6.390625 \nQ 39.453125 6.390625 43.28125 13.890625 \nQ 47.125 21.390625 47.125 36.375 \nQ 47.125 51.421875 43.28125 58.90625 \nQ 39.453125 66.40625 31.78125 66.40625 \nz\nM 31.78125 74.21875 \nQ 44.046875 74.21875 50.515625 64.515625 \nQ 56.984375 54.828125 56.984375 36.375 \nQ 56.984375 17.96875 50.515625 8.265625 \nQ 44.046875 -1.421875 31.78125 -1.421875 \nQ 19.53125 -1.421875 13.0625 8.265625 \nQ 6.59375 17.96875 6.59375 36.375 \nQ 6.59375 54.828125 13.0625 64.515625 \nQ 19.53125 74.21875 31.78125 74.21875 \nz\n\" id=\"DejaVuSans-48\"/>\n        <path d=\"M 10.6875 12.40625 \nL 21 12.40625 \nL 21 0 \nL 10.6875 0 \nz\n\" id=\"DejaVuSans-46\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_2\">\n     <g id=\"line2d_2\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"118.008708\" xlink:href=\"#mc7ca6d8532\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_2\">\n      <!-- 0.2 -->\n      <g transform=\"translate(110.057146 239.238437)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 19.1875 8.296875 \nL 53.609375 8.296875 \nL 53.609375 0 \nL 7.328125 0 \nL 7.328125 8.296875 \nQ 12.9375 14.109375 22.625 23.890625 \nQ 32.328125 33.6875 34.8125 36.53125 \nQ 39.546875 41.84375 41.421875 45.53125 \nQ 43.3125 49.21875 43.3125 52.78125 \nQ 43.3125 58.59375 39.234375 62.25 \nQ 35.15625 65.921875 28.609375 65.921875 \nQ 23.96875 65.921875 18.8125 64.3125 \nQ 13.671875 62.703125 7.8125 59.421875 \nL 7.8125 69.390625 \nQ 13.765625 71.78125 18.9375 73 \nQ 24.125 74.21875 28.421875 74.21875 \nQ 39.75 74.21875 46.484375 68.546875 \nQ 53.21875 62.890625 53.21875 53.421875 \nQ 53.21875 48.921875 51.53125 44.890625 \nQ 49.859375 40.875 45.40625 35.40625 \nQ 44.1875 33.984375 37.640625 27.21875 \nQ 31.109375 20.453125 19.1875 8.296875 \nz\n\" id=\"DejaVuSans-50\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-50\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_3\">\n     <g id=\"line2d_3\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"180.123736\" xlink:href=\"#mc7ca6d8532\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_3\">\n      <!-- 0.4 -->\n      <g transform=\"translate(172.172174 239.238437)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 37.796875 64.3125 \nL 12.890625 25.390625 \nL 37.796875 25.390625 \nz\nM 35.203125 72.90625 \nL 47.609375 72.90625 \nL 47.609375 25.390625 \nL 58.015625 25.390625 \nL 58.015625 17.1875 \nL 47.609375 17.1875 \nL 47.609375 0 \nL 37.796875 0 \nL 37.796875 17.1875 \nL 4.890625 17.1875 \nL 4.890625 26.703125 \nz\n\" id=\"DejaVuSans-52\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-52\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_4\">\n     <g id=\"line2d_4\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"242.238764\" xlink:href=\"#mc7ca6d8532\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_4\">\n      <!-- 0.6 -->\n      <g transform=\"translate(234.287201 239.238437)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 33.015625 40.375 \nQ 26.375 40.375 22.484375 35.828125 \nQ 18.609375 31.296875 18.609375 23.390625 \nQ 18.609375 15.53125 22.484375 10.953125 \nQ 26.375 6.390625 33.015625 6.390625 \nQ 39.65625 6.390625 43.53125 10.953125 \nQ 47.40625 15.53125 47.40625 23.390625 \nQ 47.40625 31.296875 43.53125 35.828125 \nQ 39.65625 40.375 33.015625 40.375 \nz\nM 52.59375 71.296875 \nL 52.59375 62.3125 \nQ 48.875 64.0625 45.09375 64.984375 \nQ 41.3125 65.921875 37.59375 65.921875 \nQ 27.828125 65.921875 22.671875 59.328125 \nQ 17.53125 52.734375 16.796875 39.40625 \nQ 19.671875 43.65625 24.015625 45.921875 \nQ 28.375 48.1875 33.59375 48.1875 \nQ 44.578125 48.1875 50.953125 41.515625 \nQ 57.328125 34.859375 57.328125 23.390625 \nQ 57.328125 12.15625 50.6875 5.359375 \nQ 44.046875 -1.421875 33.015625 -1.421875 \nQ 20.359375 -1.421875 13.671875 8.265625 \nQ 6.984375 17.96875 6.984375 36.375 \nQ 6.984375 53.65625 15.1875 63.9375 \nQ 23.390625 74.21875 37.203125 74.21875 \nQ 40.921875 74.21875 44.703125 73.484375 \nQ 48.484375 72.75 52.59375 71.296875 \nz\n\" id=\"DejaVuSans-54\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-54\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_5\">\n     <g id=\"line2d_5\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"304.353792\" xlink:href=\"#mc7ca6d8532\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_5\">\n      <!-- 0.8 -->\n      <g transform=\"translate(296.402229 239.238437)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 31.78125 34.625 \nQ 24.75 34.625 20.71875 30.859375 \nQ 16.703125 27.09375 16.703125 20.515625 \nQ 16.703125 13.921875 20.71875 10.15625 \nQ 24.75 6.390625 31.78125 6.390625 \nQ 38.8125 6.390625 42.859375 10.171875 \nQ 46.921875 13.96875 46.921875 20.515625 \nQ 46.921875 27.09375 42.890625 30.859375 \nQ 38.875 34.625 31.78125 34.625 \nz\nM 21.921875 38.8125 \nQ 15.578125 40.375 12.03125 44.71875 \nQ 8.5 49.078125 8.5 55.328125 \nQ 8.5 64.0625 14.71875 69.140625 \nQ 20.953125 74.21875 31.78125 74.21875 \nQ 42.671875 74.21875 48.875 69.140625 \nQ 55.078125 64.0625 55.078125 55.328125 \nQ 55.078125 49.078125 51.53125 44.71875 \nQ 48 40.375 41.703125 38.8125 \nQ 48.828125 37.15625 52.796875 32.3125 \nQ 56.78125 27.484375 56.78125 20.515625 \nQ 56.78125 9.90625 50.3125 4.234375 \nQ 43.84375 -1.421875 31.78125 -1.421875 \nQ 19.734375 -1.421875 13.25 4.234375 \nQ 6.78125 9.90625 6.78125 20.515625 \nQ 6.78125 27.484375 10.78125 32.3125 \nQ 14.796875 37.15625 21.921875 38.8125 \nz\nM 18.3125 54.390625 \nQ 18.3125 48.734375 21.84375 45.5625 \nQ 25.390625 42.390625 31.78125 42.390625 \nQ 38.140625 42.390625 41.71875 45.5625 \nQ 45.3125 48.734375 45.3125 54.390625 \nQ 45.3125 60.0625 41.71875 63.234375 \nQ 38.140625 66.40625 31.78125 66.40625 \nQ 25.390625 66.40625 21.84375 63.234375 \nQ 18.3125 60.0625 18.3125 54.390625 \nz\n\" id=\"DejaVuSans-56\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-56\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"xtick_6\">\n     <g id=\"line2d_6\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"366.46882\" xlink:href=\"#mc7ca6d8532\" y=\"224.64\"/>\n      </g>\n     </g>\n     <g id=\"text_6\">\n      <!-- 1.0 -->\n      <g transform=\"translate(358.517257 239.238437)scale(0.1 -0.1)\">\n       <defs>\n        <path d=\"M 12.40625 8.296875 \nL 28.515625 8.296875 \nL 28.515625 63.921875 \nL 10.984375 60.40625 \nL 10.984375 69.390625 \nL 28.421875 72.90625 \nL 38.28125 72.90625 \nL 38.28125 8.296875 \nL 54.390625 8.296875 \nL 54.390625 0 \nL 12.40625 0 \nz\n\" id=\"DejaVuSans-49\"/>\n       </defs>\n       <use xlink:href=\"#DejaVuSans-49\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"text_7\">\n     <!-- s -->\n     <g transform=\"translate(208.576562 252.916562)scale(0.1 -0.1)\">\n      <defs>\n       <path d=\"M 44.28125 53.078125 \nL 44.28125 44.578125 \nQ 40.484375 46.53125 36.375 47.5 \nQ 32.28125 48.484375 27.875 48.484375 \nQ 21.1875 48.484375 17.84375 46.4375 \nQ 14.5 44.390625 14.5 40.28125 \nQ 14.5 37.15625 16.890625 35.375 \nQ 19.28125 33.59375 26.515625 31.984375 \nL 29.59375 31.296875 \nQ 39.15625 29.25 43.1875 25.515625 \nQ 47.21875 21.78125 47.21875 15.09375 \nQ 47.21875 7.46875 41.1875 3.015625 \nQ 35.15625 -1.421875 24.609375 -1.421875 \nQ 20.21875 -1.421875 15.453125 -0.5625 \nQ 10.6875 0.296875 5.421875 2 \nL 5.421875 11.28125 \nQ 10.40625 8.6875 15.234375 7.390625 \nQ 20.0625 6.109375 24.8125 6.109375 \nQ 31.15625 6.109375 34.5625 8.28125 \nQ 37.984375 10.453125 37.984375 14.40625 \nQ 37.984375 18.0625 35.515625 20.015625 \nQ 33.0625 21.96875 24.703125 23.78125 \nL 21.578125 24.515625 \nQ 13.234375 26.265625 9.515625 29.90625 \nQ 5.8125 33.546875 5.8125 39.890625 \nQ 5.8125 47.609375 11.28125 51.796875 \nQ 16.75 56 26.8125 56 \nQ 31.78125 56 36.171875 55.265625 \nQ 40.578125 54.546875 44.28125 53.078125 \nz\n\" id=\"DejaVuSans-115\"/>\n      </defs>\n      <use xlink:href=\"#DejaVuSans-115\"/>\n     </g>\n    </g>\n   </g>\n   <g id=\"matplotlib.axis_2\">\n    <g id=\"ytick_1\">\n     <g id=\"line2d_7\">\n      <defs>\n       <path d=\"M 0 0 \nL -3.5 0 \n\" id=\"m45fa920219\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n      </defs>\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m45fa920219\" y=\"214.756364\"/>\n      </g>\n     </g>\n     <g id=\"text_8\">\n      <!-- 0.0 -->\n      <g transform=\"translate(20.878125 218.555582)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_2\">\n     <g id=\"line2d_8\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m45fa920219\" y=\"175.221818\"/>\n      </g>\n     </g>\n     <g id=\"text_9\">\n      <!-- 0.2 -->\n      <g transform=\"translate(20.878125 179.021037)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-50\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_3\">\n     <g id=\"line2d_9\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m45fa920219\" y=\"135.687273\"/>\n      </g>\n     </g>\n     <g id=\"text_10\">\n      <!-- 0.4 -->\n      <g transform=\"translate(20.878125 139.486491)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-52\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_4\">\n     <g id=\"line2d_10\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m45fa920219\" y=\"96.152727\"/>\n      </g>\n     </g>\n     <g id=\"text_11\">\n      <!-- 0.6 -->\n      <g transform=\"translate(20.878125 99.951946)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-54\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_5\">\n     <g id=\"line2d_11\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m45fa920219\" y=\"56.618182\"/>\n      </g>\n     </g>\n     <g id=\"text_12\">\n      <!-- 0.8 -->\n      <g transform=\"translate(20.878125 60.417401)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-48\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-56\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"ytick_6\">\n     <g id=\"line2d_12\">\n      <g>\n       <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"43.78125\" xlink:href=\"#m45fa920219\" y=\"17.083636\"/>\n      </g>\n     </g>\n     <g id=\"text_13\">\n      <!-- 1.0 -->\n      <g transform=\"translate(20.878125 20.882855)scale(0.1 -0.1)\">\n       <use xlink:href=\"#DejaVuSans-49\"/>\n       <use x=\"63.623047\" xlink:href=\"#DejaVuSans-46\"/>\n       <use x=\"95.410156\" xlink:href=\"#DejaVuSans-48\"/>\n      </g>\n     </g>\n    </g>\n    <g id=\"text_14\">\n     <!-- P -->\n     <g transform=\"translate(14.798438 118.934844)rotate(-90)scale(0.1 -0.1)\">\n      <defs>\n       <path d=\"M 19.671875 64.796875 \nL 19.671875 37.40625 \nL 32.078125 37.40625 \nQ 38.96875 37.40625 42.71875 40.96875 \nQ 46.484375 44.53125 46.484375 51.125 \nQ 46.484375 57.671875 42.71875 61.234375 \nQ 38.96875 64.796875 32.078125 64.796875 \nz\nM 9.8125 72.90625 \nL 32.078125 72.90625 \nQ 44.34375 72.90625 50.609375 67.359375 \nQ 56.890625 61.8125 56.890625 51.125 \nQ 56.890625 40.328125 50.609375 34.8125 \nQ 44.34375 29.296875 32.078125 29.296875 \nL 19.671875 29.296875 \nL 19.671875 0 \nL 9.8125 0 \nz\n\" id=\"DejaVuSans-80\"/>\n      </defs>\n      <use xlink:href=\"#DejaVuSans-80\"/>\n     </g>\n    </g>\n   </g>\n   <g id=\"line2d_13\">\n    <path clip-path=\"url(#p5436d95b4a)\" d=\"M 58.999432 89.438248 \nL 62.105183 43.298906 \nL 65.210935 26.48347 \nL 68.316686 20.418438 \nL 71.422437 18.253964 \nL 74.528189 17.489829 \nL 77.63394 17.22303 \nL 80.739692 17.130922 \nL 83.845443 17.099488 \nL 86.951194 17.088887 \nL 90.056946 17.085354 \nL 93.162697 17.084191 \nL 96.268449 17.083813 \nL 99.3742 17.083692 \nL 102.479951 17.083654 \nL 105.585703 17.083642 \nL 108.691454 17.083638 \nL 111.797205 17.083637 \nL 114.902957 17.083637 \nL 118.008708 17.083636 \nL 121.11446 17.083636 \nL 124.220211 17.083636 \nL 127.325962 17.083636 \nL 130.431714 17.083636 \nL 133.537465 17.083636 \nL 136.643217 17.083636 \nL 139.748968 17.083636 \nL 142.854719 17.083636 \nL 145.960471 17.083636 \nL 149.066222 17.083636 \nL 152.171974 17.083636 \nL 155.277725 17.083636 \nL 158.383476 17.083636 \nL 161.489228 17.083636 \nL 164.594979 17.083636 \nL 167.700731 17.083636 \nL 170.806482 17.083636 \nL 173.912233 17.083636 \nL 177.017985 17.083636 \nL 180.123736 17.083636 \nL 183.229487 17.083636 \nL 186.335239 17.083636 \nL 189.44099 17.083636 \nL 192.546742 17.083636 \nL 195.652493 17.083636 \nL 198.758244 17.083636 \nL 201.863996 17.083636 \nL 204.969747 17.083636 \nL 208.075499 17.083636 \nL 211.18125 17.083636 \nL 214.287001 17.083636 \nL 217.392753 17.083636 \nL 220.498504 17.083636 \nL 223.604256 17.083636 \nL 226.710007 17.083636 \nL 229.815758 17.083636 \nL 232.92151 17.083636 \nL 236.027261 17.083636 \nL 239.133013 17.083636 \nL 242.238764 17.083636 \nL 245.344515 17.083636 \nL 248.450267 17.083636 \nL 251.556018 17.083636 \nL 254.661769 17.083636 \nL 257.767521 17.083636 \nL 260.873272 17.083636 \nL 263.979024 17.083636 \nL 267.084775 17.083636 \nL 270.190526 17.083636 \nL 273.296278 17.083636 \nL 276.402029 17.083636 \nL 279.507781 17.083636 \nL 282.613532 17.083636 \nL 285.719283 17.083636 \nL 288.825035 17.083636 \nL 291.930786 17.083636 \nL 295.036538 17.083636 \nL 298.142289 17.083636 \nL 301.24804 17.083636 \nL 304.353792 17.083636 \nL 307.459543 17.083636 \nL 310.565295 17.083636 \nL 313.671046 17.083636 \nL 316.776797 17.083636 \nL 319.882549 17.083636 \nL 322.9883 17.083636 \nL 326.094051 17.083636 \nL 329.199803 17.083636 \nL 332.305554 17.083636 \nL 335.411306 17.083636 \nL 338.517057 17.083636 \nL 341.622808 17.083636 \nL 344.72856 17.083636 \nL 347.834311 17.083636 \nL 350.940063 17.083636 \nL 354.045814 17.083636 \nL 357.151565 17.083636 \nL 360.257317 17.083636 \nL 363.363068 17.083636 \n\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n   </g>\n   <g id=\"line2d_14\">\n    <path clip-path=\"url(#p5436d95b4a)\" d=\"M 58.999432 213.770418 \nL 62.105183 210.841406 \nL 65.210935 206.054437 \nL 68.316686 199.546872 \nL 71.422437 191.501905 \nL 74.528189 182.140161 \nL 77.63394 171.70983 \nL 80.739692 160.475958 \nL 83.845443 148.70951 \nL 86.951194 136.676836 \nL 90.056946 124.630073 \nL 93.162697 112.798965 \nL 96.268449 101.38441 \nL 99.3742 90.553948 \nL 102.479951 80.439244 \nL 105.585703 71.135481 \nL 108.691454 62.7025 \nL 111.797205 55.167389 \nL 114.902957 48.528214 \nL 118.008708 42.758515 \nL 121.11446 37.81223 \nL 124.220211 33.628699 \nL 127.325962 30.137485 \nL 130.431714 27.262766 \nL 133.537465 24.927149 \nL 136.643217 23.054814 \nL 139.748968 21.573941 \nL 142.854719 20.418438 \nL 145.960471 19.529035 \nL 149.066222 18.853812 \nL 152.171974 18.348274 \nL 155.277725 17.97507 \nL 158.383476 17.703461 \nL 161.489228 17.508631 \nL 164.594979 17.370915 \nL 167.700731 17.275014 \nL 170.806482 17.20924 \nL 173.912233 17.164823 \nL 177.017985 17.135299 \nL 180.123736 17.115989 \nL 183.229487 17.103566 \nL 186.335239 17.095708 \nL 189.44099 17.090822 \nL 192.546742 17.087839 \nL 195.652493 17.086049 \nL 198.758244 17.084996 \nL 201.863996 17.084387 \nL 204.969747 17.084043 \nL 208.075499 17.083852 \nL 211.18125 17.083748 \nL 214.287001 17.083693 \nL 217.392753 17.083665 \nL 220.498504 17.08365 \nL 223.604256 17.083643 \nL 226.710007 17.083639 \nL 229.815758 17.083638 \nL 232.92151 17.083637 \nL 236.027261 17.083637 \nL 239.133013 17.083636 \nL 242.238764 17.083636 \nL 245.344515 17.083636 \nL 248.450267 17.083636 \nL 251.556018 17.083636 \nL 254.661769 17.083636 \nL 257.767521 17.083636 \nL 260.873272 17.083636 \nL 263.979024 17.083636 \nL 267.084775 17.083636 \nL 270.190526 17.083636 \nL 273.296278 17.083636 \nL 276.402029 17.083636 \nL 279.507781 17.083636 \nL 282.613532 17.083636 \nL 285.719283 17.083636 \nL 288.825035 17.083636 \nL 291.930786 17.083636 \nL 295.036538 17.083636 \nL 298.142289 17.083636 \nL 301.24804 17.083636 \nL 304.353792 17.083636 \nL 307.459543 17.083636 \nL 310.565295 17.083636 \nL 313.671046 17.083636 \nL 316.776797 17.083636 \nL 319.882549 17.083636 \nL 322.9883 17.083636 \nL 326.094051 17.083636 \nL 329.199803 17.083636 \nL 332.305554 17.083636 \nL 335.411306 17.083636 \nL 338.517057 17.083636 \nL 341.622808 17.083636 \nL 344.72856 17.083636 \nL 347.834311 17.083636 \nL 350.940063 17.083636 \nL 354.045814 17.083636 \nL 357.151565 17.083636 \nL 360.257317 17.083636 \nL 363.363068 17.083636 \n\" style=\"fill:none;stroke:#ff7f0e;stroke-linecap:square;stroke-width:1.5;\"/>\n   </g>\n   <g id=\"line2d_15\">\n    <path clip-path=\"url(#p5436d95b4a)\" d=\"M 58.999432 214.756314 \nL 62.105183 214.755573 \nL 65.210935 214.752361 \nL 68.316686 214.743713 \nL 71.422437 214.72548 \nL 74.528189 214.692328 \nL 77.63394 214.637745 \nL 80.739692 214.554046 \nL 83.845443 214.432386 \nL 86.951194 214.262774 \nL 90.056946 214.034102 \nL 93.162697 213.734174 \nL 96.268449 213.349758 \nL 99.3742 212.866641 \nL 102.479951 212.269708 \nL 105.585703 211.543036 \nL 108.691454 210.670012 \nL 111.797205 209.633468 \nL 114.902957 208.415853 \nL 118.008708 206.999421 \nL 121.11446 205.366454 \nL 124.220211 203.499512 \nL 127.325962 201.381717 \nL 130.431714 198.997059 \nL 133.537465 196.330734 \nL 136.643217 193.369506 \nL 139.748968 190.102085 \nL 142.854719 186.519518 \nL 145.960471 182.61559 \nL 149.066222 178.387218 \nL 152.171974 173.83483 \nL 155.277725 168.962719 \nL 158.383476 163.779353 \nL 161.489228 158.297632 \nL 164.594979 152.535076 \nL 167.700731 146.513921 \nL 170.806482 140.261121 \nL 173.912233 133.808233 \nL 177.017985 127.191174 \nL 180.123736 120.449857 \nL 183.229487 113.627674 \nL 186.335239 106.770864 \nL 189.44099 99.927734 \nL 192.546742 93.147781 \nL 195.652493 86.480713 \nL 198.758244 79.975398 \nL 201.863996 73.678785 \nL 204.969747 67.634816 \nL 208.075499 61.883383 \nL 211.18125 56.459371 \nL 214.287001 51.39182 \nL 217.392753 46.703259 \nL 220.498504 42.409229 \nL 223.604256 38.518044 \nL 226.710007 35.030781 \nL 229.815758 31.941526 \nL 232.92151 29.237853 \nL 236.027261 26.90152 \nL 239.133013 24.909351 \nL 242.238764 23.234255 \nL 245.344515 21.846333 \nL 248.450267 20.714014 \nL 251.556018 19.805165 \nL 254.661769 19.088121 \nL 257.767521 18.532586 \nL 260.873272 18.110371 \nL 263.979024 17.795944 \nL 267.084775 17.566787 \nL 270.190526 17.403564 \nL 273.296278 17.290107 \nL 276.402029 17.21327 \nL 279.507781 17.162661 \nL 282.613532 17.130306 \nL 285.719283 17.110273 \nL 288.825035 17.098288 \nL 291.930786 17.09138 \nL 295.036538 17.087555 \nL 298.142289 17.085528 \nL 301.24804 17.084503 \nL 304.353792 17.084012 \nL 307.459543 17.083789 \nL 310.565295 17.083694 \nL 313.671046 17.083657 \nL 316.776797 17.083643 \nL 319.882549 17.083638 \nL 322.9883 17.083637 \nL 326.094051 17.083636 \nL 329.199803 17.083636 \nL 332.305554 17.083636 \nL 335.411306 17.083636 \nL 338.517057 17.083636 \nL 341.622808 17.083636 \nL 344.72856 17.083636 \nL 347.834311 17.083636 \nL 350.940063 17.083636 \nL 354.045814 17.083636 \nL 357.151565 17.083636 \nL 360.257317 17.083636 \nL 363.363068 17.083636 \n\" style=\"fill:none;stroke:#2ca02c;stroke-linecap:square;stroke-width:1.5;\"/>\n   </g>\n   <g id=\"line2d_16\">\n    <path clip-path=\"url(#p5436d95b4a)\" d=\"M 58.999432 214.756363 \nL 62.105183 214.756351 \nL 65.210935 214.756268 \nL 68.316686 214.755959 \nL 71.422437 214.755128 \nL 74.528189 214.753289 \nL 77.63394 214.749719 \nL 80.739692 214.743409 \nL 83.845443 214.73302 \nL 86.951194 214.716833 \nL 90.056946 214.692703 \nL 93.162697 214.658012 \nL 96.268449 214.609626 \nL 99.3742 214.543846 \nL 102.479951 214.456365 \nL 105.585703 214.342227 \nL 108.691454 214.195786 \nL 111.797205 214.010671 \nL 114.902957 213.779748 \nL 118.008708 213.495097 \nL 121.11446 213.147982 \nL 124.220211 212.728843 \nL 127.325962 212.227284 \nL 130.431714 211.632076 \nL 133.537465 210.931177 \nL 136.643217 210.111759 \nL 139.748968 209.160255 \nL 142.854719 208.062428 \nL 145.960471 206.803455 \nL 149.066222 205.368044 \nL 152.171974 203.740569 \nL 155.277725 201.905242 \nL 158.383476 199.846306 \nL 161.489228 197.548276 \nL 164.594979 194.996197 \nL 167.700731 192.175947 \nL 170.806482 189.07457 \nL 173.912233 185.680641 \nL 177.017985 181.984654 \nL 180.123736 177.979441 \nL 183.229487 173.660596 \nL 186.335239 169.026911 \nL 189.44099 164.080804 \nL 192.546742 158.828727 \nL 195.652493 153.281537 \nL 198.758244 147.454812 \nL 201.863996 141.369096 \nL 204.969747 135.050042 \nL 208.075499 128.52845 \nL 211.18125 121.840157 \nL 214.287001 115.025779 \nL 217.392753 108.130287 \nL 220.498504 101.202398 \nL 223.604256 94.293793 \nL 226.710007 87.458153 \nL 229.815758 80.750036 \nL 232.92151 74.223628 \nL 236.027261 67.931382 \nL 239.133013 61.922617 \nL 242.238764 56.242119 \nL 245.344515 50.928809 \nL 248.450267 46.014557 \nL 251.556018 41.523195 \nL 254.661769 37.469806 \nL 257.767521 33.860335 \nL 260.873272 30.691565 \nL 263.979024 27.951477 \nL 267.084775 25.619983 \nL 270.190526 23.670003 \nL 273.296278 22.068835 \nL 276.402029 20.779728 \nL 279.507781 19.763563 \nL 282.613532 18.980541 \nL 285.719283 18.391757 \nL 288.825035 17.960573 \nL 291.930786 17.653711 \nL 295.036538 17.442003 \nL 298.142289 17.300801 \nL 301.24804 17.210041 \nL 304.353792 17.154019 \nL 307.459543 17.120949 \nL 310.565295 17.102367 \nL 313.671046 17.092483 \nL 316.776797 17.087538 \nL 319.882549 17.085229 \nL 322.9883 17.084231 \nL 326.094051 17.083837 \nL 329.199803 17.083697 \nL 332.305554 17.083652 \nL 335.411306 17.08364 \nL 338.517057 17.083637 \nL 341.622808 17.083636 \nL 344.72856 17.083636 \nL 347.834311 17.083636 \nL 350.940063 17.083636 \nL 354.045814 17.083636 \nL 357.151565 17.083636 \nL 360.257317 17.083636 \nL 363.363068 17.083636 \n\" style=\"fill:none;stroke:#d62728;stroke-linecap:square;stroke-width:1.5;\"/>\n   </g>\n   <g id=\"line2d_17\">\n    <path clip-path=\"url(#p5436d95b4a)\" d=\"M 58.999432 214.756364 \nL 62.105183 214.756364 \nL 65.210935 214.756364 \nL 68.316686 214.756364 \nL 71.422437 214.756364 \nL 74.528189 214.756364 \nL 77.63394 214.756364 \nL 80.739692 214.756364 \nL 83.845443 214.756364 \nL 86.951194 214.756363 \nL 90.056946 214.756363 \nL 93.162697 214.756362 \nL 96.268449 214.756361 \nL 99.3742 214.756358 \nL 102.479951 214.756352 \nL 105.585703 214.756342 \nL 108.691454 214.756324 \nL 111.797205 214.756293 \nL 114.902957 214.756242 \nL 118.008708 214.756161 \nL 121.11446 214.756034 \nL 124.220211 214.755839 \nL 127.325962 214.755545 \nL 130.431714 214.75511 \nL 133.537465 214.754478 \nL 136.643217 214.753573 \nL 139.748968 214.752294 \nL 142.854719 214.750509 \nL 145.960471 214.748048 \nL 149.066222 214.744692 \nL 152.171974 214.740162 \nL 155.277725 214.734109 \nL 158.383476 214.726091 \nL 161.489228 214.71556 \nL 164.594979 214.701841 \nL 167.700731 214.684103 \nL 170.806482 214.661332 \nL 173.912233 214.632296 \nL 177.017985 214.595509 \nL 180.123736 214.549187 \nL 183.229487 214.491194 \nL 186.335239 214.418994 \nL 189.44099 214.329579 \nL 192.546742 214.219403 \nL 195.652493 214.084306 \nL 198.758244 213.91942 \nL 201.863996 213.71908 \nL 204.969747 213.476715 \nL 208.075499 213.18474 \nL 211.18125 212.834427 \nL 214.287001 212.415785 \nL 217.392753 211.91742 \nL 220.498504 211.326396 \nL 223.604256 210.628098 \nL 226.710007 209.806096 \nL 229.815758 208.842014 \nL 232.92151 207.715422 \nL 236.027261 206.403746 \nL 239.133013 204.882221 \nL 242.238764 203.123886 \nL 245.344515 201.099659 \nL 248.450267 198.778488 \nL 251.556018 196.127619 \nL 254.661769 193.113006 \nL 257.767521 189.699881 \nL 260.873272 185.853533 \nL 263.979024 181.54031 \nL 267.084775 176.728885 \nL 270.190526 171.391809 \nL 273.296278 165.507355 \nL 276.402029 159.061655 \nL 279.507781 152.0511 \nL 282.613532 144.48494 \nL 285.719283 136.387968 \nL 288.825035 127.803135 \nL 291.930786 118.793862 \nL 295.036538 109.445769 \nL 298.142289 99.867449 \nL 301.24804 90.189912 \nL 304.353792 80.564261 \nL 307.459543 71.157257 \nL 310.565295 62.144495 \nL 313.671046 53.701189 \nL 316.776797 45.990845 \nL 319.882549 39.152574 \nL 322.9883 33.288288 \nL 326.094051 28.451508 \nL 329.199803 24.63985 \nL 332.305554 21.793246 \nL 335.411306 19.799458 \nL 338.517057 18.507276 \nL 341.622808 17.74605 \nL 344.72856 17.348238 \nL 347.834311 17.17005 \nL 350.940063 17.105028 \nL 354.045814 17.087173 \nL 357.151565 17.083944 \nL 360.257317 17.083645 \nL 363.363068 17.083636 \n\" style=\"fill:none;stroke:#9467bd;stroke-linecap:square;stroke-width:1.5;\"/>\n   </g>\n   <g id=\"line2d_18\">\n    <path clip-path=\"url(#p5436d95b4a)\" d=\"M 58.999432 214.756364 \nL 62.105183 214.756364 \nL 65.210935 214.756364 \nL 68.316686 214.756364 \nL 71.422437 214.756364 \nL 74.528189 214.756364 \nL 77.63394 214.756364 \nL 80.739692 214.756364 \nL 83.845443 214.756364 \nL 86.951194 214.756364 \nL 90.056946 214.756364 \nL 93.162697 214.756364 \nL 96.268449 214.756364 \nL 99.3742 214.756364 \nL 102.479951 214.756364 \nL 105.585703 214.756364 \nL 108.691454 214.756364 \nL 111.797205 214.756364 \nL 114.902957 214.756364 \nL 118.008708 214.756364 \nL 121.11446 214.756364 \nL 124.220211 214.756364 \nL 127.325962 214.756364 \nL 130.431714 214.756364 \nL 133.537465 214.756364 \nL 136.643217 214.756364 \nL 139.748968 214.756364 \nL 142.854719 214.756364 \nL 145.960471 214.756364 \nL 149.066222 214.756364 \nL 152.171974 214.756364 \nL 155.277725 214.756364 \nL 158.383476 214.756363 \nL 161.489228 214.756363 \nL 164.594979 214.756363 \nL 167.700731 214.756362 \nL 170.806482 214.756361 \nL 173.912233 214.75636 \nL 177.017985 214.756357 \nL 180.123736 214.756353 \nL 183.229487 214.756346 \nL 186.335239 214.756335 \nL 189.44099 214.756317 \nL 192.546742 214.756291 \nL 195.652493 214.756249 \nL 198.758244 214.756186 \nL 201.863996 214.75609 \nL 204.969747 214.755947 \nL 208.075499 214.755734 \nL 211.18125 214.755421 \nL 214.287001 214.754963 \nL 217.392753 214.754298 \nL 220.498504 214.753341 \nL 223.604256 214.75197 \nL 226.710007 214.750023 \nL 229.815758 214.747271 \nL 232.92151 214.74341 \nL 236.027261 214.738021 \nL 239.133013 214.730545 \nL 242.238764 214.72023 \nL 245.344515 214.706075 \nL 248.450267 214.686751 \nL 251.556018 214.660502 \nL 254.661769 214.625022 \nL 257.767521 214.577292 \nL 260.873272 214.513377 \nL 263.979024 214.428174 \nL 267.084775 214.315091 \nL 270.190526 214.165648 \nL 273.296278 213.968983 \nL 276.402029 213.71125 \nL 279.507781 213.374869 \nL 282.613532 212.937627 \nL 285.719283 212.371601 \nL 288.825035 211.641869 \nL 291.930786 210.705024 \nL 295.036538 209.507459 \nL 298.142289 207.983482 \nL 301.24804 206.053304 \nL 304.353792 203.621047 \nL 307.459543 200.573005 \nL 310.565295 196.776539 \nL 313.671046 192.0802 \nL 316.776797 186.315932 \nL 319.882549 179.304604 \nL 322.9883 170.866455 \nL 326.094051 160.838481 \nL 329.199803 149.100926 \nL 332.305554 135.614768 \nL 335.411306 120.470676 \nL 338.517057 103.946691 \nL 341.622808 86.565585 \nL 344.72856 69.132749 \nL 347.834311 52.721654 \nL 350.940063 38.560839 \nL 354.045814 27.776851 \nL 357.151565 20.989797 \nL 360.257317 17.885683 \nL 363.363068 17.123211 \n\" style=\"fill:none;stroke:#8c564b;stroke-linecap:square;stroke-width:1.5;\"/>\n   </g>\n   <g id=\"line2d_19\">\n    <path clip-path=\"url(#p5436d95b4a)\" d=\"M 58.999432 214.756364 \nL 62.105183 214.756364 \nL 65.210935 214.756364 \nL 68.316686 214.756364 \nL 71.422437 214.756364 \nL 74.528189 214.756364 \nL 77.63394 214.756364 \nL 80.739692 214.756364 \nL 83.845443 214.756364 \nL 86.951194 214.756364 \nL 90.056946 214.756364 \nL 93.162697 214.756364 \nL 96.268449 214.756364 \nL 99.3742 214.756364 \nL 102.479951 214.756364 \nL 105.585703 214.756364 \nL 108.691454 214.756364 \nL 111.797205 214.756364 \nL 114.902957 214.756364 \nL 118.008708 214.756364 \nL 121.11446 214.756364 \nL 124.220211 214.756364 \nL 127.325962 214.756364 \nL 130.431714 214.756364 \nL 133.537465 214.756364 \nL 136.643217 214.756364 \nL 139.748968 214.756364 \nL 142.854719 214.756364 \nL 145.960471 214.756364 \nL 149.066222 214.756364 \nL 152.171974 214.756364 \nL 155.277725 214.756364 \nL 158.383476 214.756364 \nL 161.489228 214.756364 \nL 164.594979 214.756364 \nL 167.700731 214.756364 \nL 170.806482 214.756364 \nL 173.912233 214.756364 \nL 177.017985 214.756364 \nL 180.123736 214.756364 \nL 183.229487 214.756363 \nL 186.335239 214.756363 \nL 189.44099 214.756363 \nL 192.546742 214.756363 \nL 195.652493 214.756362 \nL 198.758244 214.756361 \nL 201.863996 214.756359 \nL 204.969747 214.756355 \nL 208.075499 214.756349 \nL 211.18125 214.75634 \nL 214.287001 214.756325 \nL 217.392753 214.756301 \nL 220.498504 214.756263 \nL 223.604256 214.756202 \nL 226.710007 214.756108 \nL 229.815758 214.755963 \nL 232.92151 214.75574 \nL 236.027261 214.7554 \nL 239.133013 214.754887 \nL 242.238764 214.754116 \nL 245.344515 214.752965 \nL 248.450267 214.751261 \nL 251.556018 214.748751 \nL 254.661769 214.745079 \nL 257.767521 214.739736 \nL 260.873272 214.732009 \nL 263.979024 214.720895 \nL 267.084775 214.704996 \nL 270.190526 214.682374 \nL 273.296278 214.650348 \nL 276.402029 214.605237 \nL 279.507781 214.542004 \nL 282.613532 214.453792 \nL 285.719283 214.331305 \nL 288.825035 214.162006 \nL 291.930786 213.929062 \nL 295.036538 213.609985 \nL 298.142289 213.17488 \nL 301.24804 212.58423 \nL 304.353792 211.786103 \nL 307.459543 210.712715 \nL 310.565295 209.276273 \nL 313.671046 207.364116 \nL 316.776797 204.833294 \nL 319.882549 201.504995 \nL 322.9883 197.159657 \nL 326.094051 191.534332 \nL 329.199803 184.325001 \nL 332.305554 175.198143 \nL 335.411306 163.818091 \nL 338.517057 149.899105 \nL 341.622808 133.292865 \nL 344.72856 114.12062 \nL 347.834311 92.949085 \nL 350.940063 70.980519 \nL 354.045814 50.165464 \nL 357.151565 33.040151 \nL 360.257317 21.970993 \nL 363.363068 17.565313 \n\" style=\"fill:none;stroke:#e377c2;stroke-linecap:square;stroke-width:1.5;\"/>\n   </g>\n   <g id=\"line2d_20\">\n    <path clip-path=\"url(#p5436d95b4a)\" d=\"M 58.999432 214.756364 \nL 62.105183 214.756364 \nL 65.210935 214.756364 \nL 68.316686 214.756364 \nL 71.422437 214.756364 \nL 74.528189 214.756364 \nL 77.63394 214.756364 \nL 80.739692 214.756364 \nL 83.845443 214.756364 \nL 86.951194 214.756364 \nL 90.056946 214.756364 \nL 93.162697 214.756364 \nL 96.268449 214.756364 \nL 99.3742 214.756364 \nL 102.479951 214.756364 \nL 105.585703 214.756364 \nL 108.691454 214.756364 \nL 111.797205 214.756364 \nL 114.902957 214.756364 \nL 118.008708 214.756364 \nL 121.11446 214.756364 \nL 124.220211 214.756364 \nL 127.325962 214.756364 \nL 130.431714 214.756364 \nL 133.537465 214.756364 \nL 136.643217 214.756364 \nL 139.748968 214.756364 \nL 142.854719 214.756364 \nL 145.960471 214.756364 \nL 149.066222 214.756364 \nL 152.171974 214.756364 \nL 155.277725 214.756364 \nL 158.383476 214.756364 \nL 161.489228 214.756364 \nL 164.594979 214.756364 \nL 167.700731 214.756364 \nL 170.806482 214.756364 \nL 173.912233 214.756364 \nL 177.017985 214.756364 \nL 180.123736 214.756364 \nL 183.229487 214.756364 \nL 186.335239 214.756364 \nL 189.44099 214.756364 \nL 192.546742 214.756364 \nL 195.652493 214.756364 \nL 198.758244 214.756364 \nL 201.863996 214.756364 \nL 204.969747 214.756364 \nL 208.075499 214.756364 \nL 211.18125 214.756364 \nL 214.287001 214.756364 \nL 217.392753 214.756364 \nL 220.498504 214.756364 \nL 223.604256 214.756364 \nL 226.710007 214.756364 \nL 229.815758 214.756364 \nL 232.92151 214.756364 \nL 236.027261 214.756364 \nL 239.133013 214.756364 \nL 242.238764 214.756364 \nL 245.344515 214.756364 \nL 248.450267 214.756364 \nL 251.556018 214.756364 \nL 254.661769 214.756364 \nL 257.767521 214.756363 \nL 260.873272 214.756363 \nL 263.979024 214.756363 \nL 267.084775 214.756362 \nL 270.190526 214.75636 \nL 273.296278 214.756357 \nL 276.402029 214.756349 \nL 279.507781 214.756335 \nL 282.613532 214.756306 \nL 285.719283 214.756249 \nL 288.825035 214.75614 \nL 291.930786 214.755929 \nL 295.036538 214.755529 \nL 298.142289 214.754773 \nL 301.24804 214.753355 \nL 304.353792 214.750721 \nL 307.459543 214.745863 \nL 310.565295 214.73697 \nL 313.671046 214.720812 \nL 316.776797 214.691663 \nL 319.882549 214.639452 \nL 322.9883 214.546574 \nL 326.094051 214.382482 \nL 329.199803 214.094534 \nL 332.305554 213.592676 \nL 335.411306 212.724092 \nL 338.517057 211.231864 \nL 341.622808 208.689048 \nL 344.72856 204.397331 \nL 347.834311 197.24126 \nL 350.940063 185.506845 \nL 354.045814 166.741408 \nL 357.151565 137.945043 \nL 360.257317 96.998805 \nL 363.363068 47.924576 \n\" style=\"fill:none;stroke:#7f7f7f;stroke-linecap:square;stroke-width:1.5;\"/>\n   </g>\n   <g id=\"line2d_21\">\n    <path clip-path=\"url(#p5436d95b4a)\" d=\"M 58.999432 214.756364 \nL 62.105183 214.756364 \nL 65.210935 214.756364 \nL 68.316686 214.756364 \nL 71.422437 214.756364 \nL 74.528189 214.756364 \nL 77.63394 214.756364 \nL 80.739692 214.756364 \nL 83.845443 214.756364 \nL 86.951194 214.756364 \nL 90.056946 214.756364 \nL 93.162697 214.756364 \nL 96.268449 214.756364 \nL 99.3742 214.756364 \nL 102.479951 214.756364 \nL 105.585703 214.756364 \nL 108.691454 214.756364 \nL 111.797205 214.756364 \nL 114.902957 214.756364 \nL 118.008708 214.756364 \nL 121.11446 214.756364 \nL 124.220211 214.756364 \nL 127.325962 214.756364 \nL 130.431714 214.756364 \nL 133.537465 214.756364 \nL 136.643217 214.756364 \nL 139.748968 214.756364 \nL 142.854719 214.756364 \nL 145.960471 214.756364 \nL 149.066222 214.756364 \nL 152.171974 214.756364 \nL 155.277725 214.756364 \nL 158.383476 214.756364 \nL 161.489228 214.756364 \nL 164.594979 214.756364 \nL 167.700731 214.756364 \nL 170.806482 214.756364 \nL 173.912233 214.756364 \nL 177.017985 214.756364 \nL 180.123736 214.756364 \nL 183.229487 214.756364 \nL 186.335239 214.756364 \nL 189.44099 214.756364 \nL 192.546742 214.756364 \nL 195.652493 214.756364 \nL 198.758244 214.756364 \nL 201.863996 214.756364 \nL 204.969747 214.756364 \nL 208.075499 214.756364 \nL 211.18125 214.756364 \nL 214.287001 214.756364 \nL 217.392753 214.756364 \nL 220.498504 214.756364 \nL 223.604256 214.756364 \nL 226.710007 214.756364 \nL 229.815758 214.756364 \nL 232.92151 214.756364 \nL 236.027261 214.756364 \nL 239.133013 214.756364 \nL 242.238764 214.756364 \nL 245.344515 214.756364 \nL 248.450267 214.756364 \nL 251.556018 214.756364 \nL 254.661769 214.756364 \nL 257.767521 214.756364 \nL 260.873272 214.756364 \nL 263.979024 214.756364 \nL 267.084775 214.756364 \nL 270.190526 214.756364 \nL 273.296278 214.756364 \nL 276.402029 214.756364 \nL 279.507781 214.756364 \nL 282.613532 214.756364 \nL 285.719283 214.756364 \nL 288.825035 214.756364 \nL 291.930786 214.756364 \nL 295.036538 214.756364 \nL 298.142289 214.756364 \nL 301.24804 214.756364 \nL 304.353792 214.756364 \nL 307.459543 214.756363 \nL 310.565295 214.756363 \nL 313.671046 214.756362 \nL 316.776797 214.756358 \nL 319.882549 214.756346 \nL 322.9883 214.756308 \nL 326.094051 214.756187 \nL 329.199803 214.755809 \nL 332.305554 214.754646 \nL 335.411306 214.751113 \nL 338.517057 214.740512 \nL 341.622808 214.709078 \nL 344.72856 214.61697 \nL 347.834311 214.350171 \nL 350.940063 213.586036 \nL 354.045814 211.421562 \nL 357.151565 205.35653 \nL 360.257317 188.541094 \nL 363.363068 142.401752 \n\" style=\"fill:none;stroke:#bcbd22;stroke-linecap:square;stroke-width:1.5;\"/>\n   </g>\n   <g id=\"line2d_22\"/>\n   <g id=\"line2d_23\"/>\n   <g id=\"line2d_24\"/>\n   <g id=\"line2d_25\"/>\n   <g id=\"line2d_26\"/>\n   <g id=\"line2d_27\"/>\n   <g id=\"line2d_28\"/>\n   <g id=\"line2d_29\"/>\n   <g id=\"line2d_30\"/>\n   <g id=\"patch_3\">\n    <path d=\"M 43.78125 224.64 \nL 43.78125 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_4\">\n    <path d=\"M 378.58125 224.64 \nL 378.58125 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_5\">\n    <path d=\"M 43.78125 224.64 \nL 378.58125 224.64 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"patch_6\">\n    <path d=\"M 43.78125 7.2 \nL 378.58125 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n   </g>\n   <g id=\"legend_1\">\n    <g id=\"patch_7\">\n     <path d=\"M 50.78125 190.810625 \nL 111.409375 190.810625 \nQ 113.409375 190.810625 113.409375 188.810625 \nL 113.409375 43.029375 \nQ 113.409375 41.029375 111.409375 41.029375 \nL 50.78125 41.029375 \nQ 48.78125 41.029375 48.78125 43.029375 \nL 48.78125 188.810625 \nQ 48.78125 190.810625 50.78125 190.810625 \nz\n\" style=\"fill:#ffffff;opacity:0.8;stroke:#cccccc;stroke-linejoin:miter;\"/>\n    </g>\n    <g id=\"text_15\">\n     <!-- r,b -->\n     <g transform=\"translate(74.276563 52.627812)scale(0.1 -0.1)\">\n      <defs>\n       <path d=\"M 41.109375 46.296875 \nQ 39.59375 47.171875 37.8125 47.578125 \nQ 36.03125 48 33.890625 48 \nQ 26.265625 48 22.1875 43.046875 \nQ 18.109375 38.09375 18.109375 28.8125 \nL 18.109375 0 \nL 9.078125 0 \nL 9.078125 54.6875 \nL 18.109375 54.6875 \nL 18.109375 46.1875 \nQ 20.953125 51.171875 25.484375 53.578125 \nQ 30.03125 56 36.53125 56 \nQ 37.453125 56 38.578125 55.875 \nQ 39.703125 55.765625 41.0625 55.515625 \nz\n\" id=\"DejaVuSans-114\"/>\n       <path d=\"M 11.71875 12.40625 \nL 22.015625 12.40625 \nL 22.015625 4 \nL 14.015625 -11.625 \nL 7.71875 -11.625 \nL 11.71875 4 \nz\n\" id=\"DejaVuSans-44\"/>\n       <path d=\"M 48.6875 27.296875 \nQ 48.6875 37.203125 44.609375 42.84375 \nQ 40.53125 48.484375 33.40625 48.484375 \nQ 26.265625 48.484375 22.1875 42.84375 \nQ 18.109375 37.203125 18.109375 27.296875 \nQ 18.109375 17.390625 22.1875 11.75 \nQ 26.265625 6.109375 33.40625 6.109375 \nQ 40.53125 6.109375 44.609375 11.75 \nQ 48.6875 17.390625 48.6875 27.296875 \nz\nM 18.109375 46.390625 \nQ 20.953125 51.265625 25.265625 53.625 \nQ 29.59375 56 35.59375 56 \nQ 45.5625 56 51.78125 48.09375 \nQ 58.015625 40.1875 58.015625 27.296875 \nQ 58.015625 14.40625 51.78125 6.484375 \nQ 45.5625 -1.421875 35.59375 -1.421875 \nQ 29.59375 -1.421875 25.265625 0.953125 \nQ 20.953125 3.328125 18.109375 8.203125 \nL 18.109375 0 \nL 9.078125 0 \nL 9.078125 75.984375 \nL 18.109375 75.984375 \nz\n\" id=\"DejaVuSans-98\"/>\n      </defs>\n      <use xlink:href=\"#DejaVuSans-114\"/>\n      <use x=\"41.113281\" xlink:href=\"#DejaVuSans-44\"/>\n      <use x=\"72.900391\" xlink:href=\"#DejaVuSans-98\"/>\n     </g>\n    </g>\n    <g id=\"line2d_31\">\n     <path d=\"M 52.78125 63.805937 \nL 72.78125 63.805937 \n\" style=\"fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;\"/>\n    </g>\n    <g id=\"line2d_32\"/>\n    <g id=\"text_16\">\n     <!-- 1,100 -->\n     <g transform=\"translate(80.78125 67.305937)scale(0.1 -0.1)\">\n      <use xlink:href=\"#DejaVuSans-49\"/>\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-44\"/>\n      <use x=\"95.410156\" xlink:href=\"#DejaVuSans-49\"/>\n      <use x=\"159.033203\" xlink:href=\"#DejaVuSans-48\"/>\n      <use x=\"222.65625\" xlink:href=\"#DejaVuSans-48\"/>\n     </g>\n    </g>\n    <g id=\"line2d_33\">\n     <path d=\"M 52.78125 78.484062 \nL 72.78125 78.484062 \n\" style=\"fill:none;stroke:#ff7f0e;stroke-linecap:square;stroke-width:1.5;\"/>\n    </g>\n    <g id=\"line2d_34\"/>\n    <g id=\"text_17\">\n     <!-- 2,50 -->\n     <g transform=\"translate(80.78125 81.984062)scale(0.1 -0.1)\">\n      <defs>\n       <path d=\"M 10.796875 72.90625 \nL 49.515625 72.90625 \nL 49.515625 64.59375 \nL 19.828125 64.59375 \nL 19.828125 46.734375 \nQ 21.96875 47.46875 24.109375 47.828125 \nQ 26.265625 48.1875 28.421875 48.1875 \nQ 40.625 48.1875 47.75 41.5 \nQ 54.890625 34.8125 54.890625 23.390625 \nQ 54.890625 11.625 47.5625 5.09375 \nQ 40.234375 -1.421875 26.90625 -1.421875 \nQ 22.3125 -1.421875 17.546875 -0.640625 \nQ 12.796875 0.140625 7.71875 1.703125 \nL 7.71875 11.625 \nQ 12.109375 9.234375 16.796875 8.0625 \nQ 21.484375 6.890625 26.703125 6.890625 \nQ 35.15625 6.890625 40.078125 11.328125 \nQ 45.015625 15.765625 45.015625 23.390625 \nQ 45.015625 31 40.078125 35.4375 \nQ 35.15625 39.890625 26.703125 39.890625 \nQ 22.75 39.890625 18.8125 39.015625 \nQ 14.890625 38.140625 10.796875 36.28125 \nz\n\" id=\"DejaVuSans-53\"/>\n      </defs>\n      <use xlink:href=\"#DejaVuSans-50\"/>\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-44\"/>\n      <use x=\"95.410156\" xlink:href=\"#DejaVuSans-53\"/>\n      <use x=\"159.033203\" xlink:href=\"#DejaVuSans-48\"/>\n     </g>\n    </g>\n    <g id=\"line2d_35\">\n     <path d=\"M 52.78125 93.162187 \nL 72.78125 93.162187 \n\" style=\"fill:none;stroke:#2ca02c;stroke-linecap:square;stroke-width:1.5;\"/>\n    </g>\n    <g id=\"line2d_36\"/>\n    <g id=\"text_18\">\n     <!-- 4,25 -->\n     <g transform=\"translate(80.78125 96.662187)scale(0.1 -0.1)\">\n      <use xlink:href=\"#DejaVuSans-52\"/>\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-44\"/>\n      <use x=\"95.410156\" xlink:href=\"#DejaVuSans-50\"/>\n      <use x=\"159.033203\" xlink:href=\"#DejaVuSans-53\"/>\n     </g>\n    </g>\n    <g id=\"line2d_37\">\n     <path d=\"M 52.78125 107.840312 \nL 72.78125 107.840312 \n\" style=\"fill:none;stroke:#d62728;stroke-linecap:square;stroke-width:1.5;\"/>\n    </g>\n    <g id=\"line2d_38\"/>\n    <g id=\"text_19\">\n     <!-- 5,20 -->\n     <g transform=\"translate(80.78125 111.340312)scale(0.1 -0.1)\">\n      <use xlink:href=\"#DejaVuSans-53\"/>\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-44\"/>\n      <use x=\"95.410156\" xlink:href=\"#DejaVuSans-50\"/>\n      <use x=\"159.033203\" xlink:href=\"#DejaVuSans-48\"/>\n     </g>\n    </g>\n    <g id=\"line2d_39\">\n     <path d=\"M 52.78125 122.518437 \nL 72.78125 122.518437 \n\" style=\"fill:none;stroke:#9467bd;stroke-linecap:square;stroke-width:1.5;\"/>\n    </g>\n    <g id=\"line2d_40\"/>\n    <g id=\"text_20\">\n     <!-- 10,10 -->\n     <g transform=\"translate(80.78125 126.018437)scale(0.1 -0.1)\">\n      <use xlink:href=\"#DejaVuSans-49\"/>\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n      <use x=\"127.246094\" xlink:href=\"#DejaVuSans-44\"/>\n      <use x=\"159.033203\" xlink:href=\"#DejaVuSans-49\"/>\n      <use x=\"222.65625\" xlink:href=\"#DejaVuSans-48\"/>\n     </g>\n    </g>\n    <g id=\"line2d_41\">\n     <path d=\"M 52.78125 137.196562 \nL 72.78125 137.196562 \n\" style=\"fill:none;stroke:#8c564b;stroke-linecap:square;stroke-width:1.5;\"/>\n    </g>\n    <g id=\"line2d_42\"/>\n    <g id=\"text_21\">\n     <!-- 20,5 -->\n     <g transform=\"translate(80.78125 140.696562)scale(0.1 -0.1)\">\n      <use xlink:href=\"#DejaVuSans-50\"/>\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n      <use x=\"127.246094\" xlink:href=\"#DejaVuSans-44\"/>\n      <use x=\"159.033203\" xlink:href=\"#DejaVuSans-53\"/>\n     </g>\n    </g>\n    <g id=\"line2d_43\">\n     <path d=\"M 52.78125 151.874687 \nL 72.78125 151.874687 \n\" style=\"fill:none;stroke:#e377c2;stroke-linecap:square;stroke-width:1.5;\"/>\n    </g>\n    <g id=\"line2d_44\"/>\n    <g id=\"text_22\">\n     <!-- 25,4 -->\n     <g transform=\"translate(80.78125 155.374687)scale(0.1 -0.1)\">\n      <use xlink:href=\"#DejaVuSans-50\"/>\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\n      <use x=\"127.246094\" xlink:href=\"#DejaVuSans-44\"/>\n      <use x=\"159.033203\" xlink:href=\"#DejaVuSans-52\"/>\n     </g>\n    </g>\n    <g id=\"line2d_45\">\n     <path d=\"M 52.78125 166.552812 \nL 72.78125 166.552812 \n\" style=\"fill:none;stroke:#7f7f7f;stroke-linecap:square;stroke-width:1.5;\"/>\n    </g>\n    <g id=\"line2d_46\"/>\n    <g id=\"text_23\">\n     <!-- 50,2 -->\n     <g transform=\"translate(80.78125 170.052812)scale(0.1 -0.1)\">\n      <use xlink:href=\"#DejaVuSans-53\"/>\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n      <use x=\"127.246094\" xlink:href=\"#DejaVuSans-44\"/>\n      <use x=\"159.033203\" xlink:href=\"#DejaVuSans-50\"/>\n     </g>\n    </g>\n    <g id=\"line2d_47\">\n     <path d=\"M 52.78125 181.230937 \nL 72.78125 181.230937 \n\" style=\"fill:none;stroke:#bcbd22;stroke-linecap:square;stroke-width:1.5;\"/>\n    </g>\n    <g id=\"line2d_48\"/>\n    <g id=\"text_24\">\n     <!-- 100,1 -->\n     <g transform=\"translate(80.78125 184.730937)scale(0.1 -0.1)\">\n      <use xlink:href=\"#DejaVuSans-49\"/>\n      <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n      <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n      <use x=\"190.869141\" xlink:href=\"#DejaVuSans-44\"/>\n      <use x=\"222.65625\" xlink:href=\"#DejaVuSans-49\"/>\n     </g>\n    </g>\n   </g>\n  </g>\n </g>\n <defs>\n  <clipPath id=\"p5436d95b4a\">\n   <rect height=\"217.44\" width=\"334.8\" x=\"43.78125\" y=\"7.2\"/>\n  </clipPath>\n </defs>\n</svg>\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sns.lineplot(data=results, x='s', y='P', hue='r,b')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.13 (default, Mar 28 2022, 06:59:08) [MSC v.1916 64 bit (AMD64)]"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "5fe10bf018ef3e697f9035d60bf60847932a12bface18908407fd371fe880db9"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
